/**
 * 
 */
package com.dashboard.dao;

import java.io.Serializable;
import java.util.List;

/**
 * @author Joao
 *
 */
public interface GenericoDao<T, ID extends Serializable>
{
	/**
	 * Retorna o objeto atrav&eacute;s de seu identificador.
	 * 
	 * @param id o identificador do objeto.
	 * @return T objeto atrav&eacute;s de seu identificador.
	 */
	T recuperar(ID id);
	
	/**
	 * Persiste o objeto.
	 * 
	 * @param entidade entidade a  ser persistida.
	 */
	void persistir(T entidade);
	
	/**
	 * Atualiza o objeto.
	 * 
	 * @param entidade entidade a  ser atualizada.
	 */
	void atualizar(T entidade);
	
	/**
	 * Apaga o objeto.
	 * 
	 * @param entidade entidade a  ser apagada.
	 */
	void apagar(T entidade);
	
	/**
	 * Lista todos os objetos do tipo persistidos.
	 * 
	 * @return List<T> lista de objetos do tipo persistido.
	 */
	List<T> recuperarTodos();
}
